#pragma once

template <class entity_type>
class IState
{
public:

  virtual ~IState(){}

  virtual void Enter(entity_type*)=0;

  virtual void Execute(entity_type*, float dt)=0;

  virtual void Exit(entity_type*)=0;
};